package com.day12;

/**
 * abstract关键字的使用
 * <p>
 * abstract可以用来修饰的结构:类，方法
 * <p>
 * 3.抽象类不能实例化
 * >抽象类中一定有构造器，只要是类就有构造器，便于子类对象实例化的时候调用(涉及:子类对象实例化的全过程)
 * >开发中，都会提供抽象类的子类，让子类对象去实例化。完成相关的操作。
 * <p>
 * 4. abstract修饰方法:抽象方法
 * 抽象方法，没有方法体。只有方法定义。
 * 包含抽象方法的类，一定是抽象类，反之，类是抽象类，抽象类中是可以没有抽象方法的。
 * 若子类重写了父类中的所有抽象方法后，此子类方可实例化。
 * 若子类没有重写父类中的所有抽象方法，则此子类也是一个抽象类，需要使用abstract
 *
 *
 * abstract不能用来修饰属性，构造器等结构
 *
 * abstract不能用来修饰私有方法，静态方法，final的方法，final类。
 */
public class AbstractTest {
    public static void main(String[] args) {

    }


}


abstract class Crutche {
    abstract void demo();
}


abstract class PersonTest extends Crutche{
    String name;
    int age;

    public PersonTest() {

    }

    public PersonTest(String name, int age) {

    }

    //抽象方法
    public abstract void eat();

    public void walk() {
        System.out.println("人工作");
    }

}


class Student extends PersonTest {

    public Student(){

    }


    public Student(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {

    }

    @Override
    void demo() {

    }
}
